package com.fotkidemo.util;

import com.fotkidemo.beans.EntryElement;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * User: roma
 * Date: 6/18/12
 * Time: 3:46 AM
 * To change this template use File | Settings | File Templates.
 */

/**
 * Кэш хранит результат разбора json ответа. Хранит коллекцию entry-элементов(альбомов или картинок).
 * Кэш имеет уникальный id.
 * Кэш заполняется при первом разборе json ответа и
 * обновляется только после обновления соответствующего элемента на сервере yandex фоток.
 */
public class EntryElementCache<T extends EntryElement> {

    private final Map<String, T> entries = Collections.synchronizedMap(new HashMap<String, T>());

    private String id;
    private Date updated;
    private boolean isUpdated;

    public EntryElementCache(String id) {
        this.id = id;
    }

    public void put(String key, T obj) {
        if (isUpdated) {
            entries.put(key, obj);
        }
    }

    public T get(String key) {
        return entries.get(key);
    }

    public Collection<T> getValues() {
        return entries.values();
    }

    public void setDate(Date newDate) {
        if (updated != null) {
            if (newDate.after(updated)) {
                isUpdated = true;
                updated = newDate;
            }
        } else {
            isUpdated = true;
            updated = newDate;
        }
    }

    public boolean isUpdated() {
        return isUpdated;
    }

    public void updated() {
        isUpdated = false;
    }

    public String getId() {
        return id;
    }
}
